home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 1 (Walnut Creek)
/
Aminet - June 1993 [Walnut Creek].iso
/
usenet
/
sources
/
volume89
/
graphics
/
mandel18.4
< prev
next >
Wrap
Internet Message Format
|
1989-05-18
|
55KB
Path: xanth!ames!sun-barr!sun!swap!page
From: page%swap@Sun.COM (Bob Page)
Newsgroups: comp.sources.amiga
Subject: v89i145: mandel - mandelobrot generator v180, Part04/04
Message-ID: <105556@sun.Eng.Sun.COM>
Date: 17 May 89 15:53:47 GMT
Sender: news@sun.Eng.Sun.COM
Lines: 2046
Approved: page@sun.com
Submitted-by: u211344@hnykun11.bitnet (Olaf 'Rhialto' Seibert)
Posting-number: Volume 89, Issue 145
Archive-name: graphics/mandel180.4
# This is a shell archive.
# Remove anything above and including the cut line.
# Then run the rest of the file through 'sh'.
# Unpacked files will be owned by you and have default permissions.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar: SHell ARchive
# Run the following text through 'sh' to create:
# Notice
# Palette.c
# Select.blk
# Select.c
# Select.req
# minrexx.h
# This is archive 4 of a 4-part kit.
# This archive created: Wed May 17 20:45:14 1989
echo "extracting Notice"
sed 's/^X//' << \SHAR_EOF > Notice
X/*
X * +-----------------------------+
X * | Mandelbrot Construction Set |
X * +-----------------------------+
X *
X * (C) By Olaf {* KosmoSoft *} Seibert
X * 15 September 1987 V1.0
X * 22 January 1989 V1.1
X * 28 January 1989 V1.2
X * 16 April 1989 V1.3
X *
X *
X * Copyright 1987, 1989 by Olaf Seibert, KosmoSoft Productions.
X *
X * Notice: The palette and the file requester were written by others.
X * (=RJ= Mical and C. Heath respectively)
X * These packages were adapted to be more generally usable, and to
X * conform more to my own taste.
X * I had to remove a number of bugs from Jim Kents IFF routines.
X * For the 'select' requester I used Stuart Ferguson's blk 2.0 (which I
X * extended to generate code for longint string requesters)
X *
X * Mind you: _I_ didn't mention ShareWare! (though donations are
X * not unwelcome...)
X */
X
XThis software is (C) Copyright 1989 by Olaf Seibert. All Rights Reserved.
X
XThis software is NOT in the public domain. It may not be sold or used for
Xprofit without prior written consent from the author, Olaf Seibert.
X
XConditions for redistribution are:
X
X- This notice must remain included at all times. It may not be modified in
X any way.
X
X- No charge may be made for distribution above media and transportation
X costs, except by Fred Fish when included in his library.
X
X- The source and documentation of the program must always be distributed
X with the binary, unless the distributor of said binary agrees to supply
X the source and documentation on request, with no expiration date on
X availability of said source and documentation.
X
X- If any part of this program (source or binary) or its documentation is
X included in any other software package, either integrated or separately,
X these redistribution conditions automatically apply to the entire
X package, unless prior written permission is obtained from the author.
X
X- No claim is made regarding the quality of this software or its
X documentation. It is supplied purely as-is. The author cannot be held
X responsible for any damages occurring directly or indirectly from using
X or not using this program.
X
X/************************************************************************
X* .-------------------------------------------------------------------. *
X* | --- >>> AUTHOR INFORMATION <<< --- | *
X* `-------------------------------------------------------------------' *
X*=======================================================================*
X* || *
X* Study address || Home address *
X* (might vary) || (safe way to send fanmail) *
X* || *
X* Olaf Seibert || Olaf Seibert *
X* Vossendijk 149 || Beek 5 *
X* 6534 TN Nijmegen || 5815 CS Merselo *
X* The Netherlands || The Netherlands *
X* || *
X* International +31-80561045 || International +31-4786205 *
X* or National 080-561045 || or National 04786-205 *
X* || *
X*=======================================================================*
X************************************************************************/
SHAR_EOF
echo "extracting Palette.c"
sed 's/^X//' << \SHAR_EOF > Palette.c
X#define DEBUG
X
X/*
X MAND.H -- The Constants and Definitions
X Mandelbrot Self-Squared Dragon Generator
X For the Commodore Amiga
X Version 2.01
X
X Accompanied MAND.C
X
X Copyright (c) 1985, Robert S. French
X Placed in the Public Domain
X
X Vastly Enhanced by =RJ Mical= 1985
X Manxified by Olaf Seibert 1987
X
XThis program may be distributed free of charge as long as the above
Xnotice is retained.
X
X*/
X
X
X/*-------------------*/
X/* Lots of includes! */
X
X#include <exec/types.h>
X#include <exec/memory.h>
X/* #include <exec/tasks.h> */
X/* #include <exec/libraries.h> */
X/* #include <exec/devices.h> */
X/* #include <devices/keymap.h> */
X/* #include <graphics/copper.h> */
X/* #include <graphics/display.h> */
X/* #include <graphics/gfxbase.h> */
X/* #include <graphics/text.h> */
X/* #include <graphics/view.h> */
X/* #include <graphics/gels.h> */
X/* #include <graphics/regions.h> */
X/* #include <hardware/blit.h> */
X#include <intuition/intuition.h>
X/* #include <intuition/intuitionbase.h> */
X#ifdef DEBUG
X# include <stdio.h>
X# undef STATIC /* Empty string */
X# define STATIC
X#endif
X
X/* #include <libraries/dos.h> */
X
X/* #include <workbench/workbench.h> */
X
X#include "mandel.h"
X
X/*---------------------------------*/
X#define NOT !
X#define FOREVER for(;;)
X
X/* === the definitions for the ColorWindow =============================== */
X#define COLOR_KNOB_BODY 0x1000 /* 0x1111 */
X
X#define COLORWINDOW_WIDTH 208
X#define COLORWINDOW_HEIGHT 101 /* 91 */
X
X#define DEFAULT_WINDOW_LEFT (320 - COLORWINDOW_WIDTH)
X#define DEFAULT_WINDOW_TOP (200 - COLORWINDOW_HEIGHT)
X
X#define CHARACTER_WIDTH 8
X#define CHARACTER_HEIGHT 8
X
X#define COLOR_BOX_LEFT 7
X#define COLOR_BOX_TOP 16 /* 6 */
X#define COLOR_BOX_RIGHT (COLOR_BOX_LEFT + 15)
X#define COLOR_BOX_BOTTOM (COLOR_BOX_TOP + 29)
X#define COLOR_COLOR_TOP 55 /* 45 */
X#define COLOR_COLOR_WIDTH 15
X#define COLOR_COLOR_HEIGHT 10
X#define COLOR_PROP_LEFT 38
X#define COLOR_PROP_TOP 14 /* 4 */
X#define COLOR_PROP_WIDTH 165
X#define COLOR_PROP_HEIGHT 10
X#define COLOR_CLUSTER_LEFT 141
X#define COLOR_CLUSTER_TOP 51 /* 41 */
X#define COLOR_CLUSTER_WIDTH (CHARACTER_WIDTH * 6 + 4)
X#define COLOR_CLUSTER_HEIGHT 9
X#define COLOR_AIN_TOP (COLOR_BOX_TOP - 2)
X#define COLOR_AIN_LEFT (COLOR_BOX_RIGHT + 3)
X
X/* GREEN and RED are out of order. Do you wonder why? Some day I'll
X * tell you. =RJ=
X */
X#define COLOR_COPY MAXCOL
X#define COLOR_RANGE MAXCOL+1
X#define COLOR_OK MAXCOL+2
X#define COLOR_CANCEL MAXCOL+3
X#define COLOR_GREEN MAXCOL+4
X#define COLOR_RED MAXCOL+5
X#define COLOR_BLUE MAXCOL+6
X#define COLOR_AIN_RGB MAXCOL+7
X#define COLOR_GADGETS_COUNT MAXCOL+8
X
X#define RAIN_MAX_DISTANCE (MaxColor - 2)
X#define RAIN_MIN_DISTANCE 1
X
X#define ONE_HALF (0x8000L)
X
X#define SafeFont Topaz80
X
X/****************************************************************************
X * MAND6.C - Color Window Data
X * Mandelbrot Self-Squared Dragon Generator
X * For the Commodore Amiga
X * Version 2.01
X *
X * Copyright (C) 1986, =Robert J. Mical=
X * Placed in the Public Domain
X *
X * This program may be distributed free of charge as long as the above
X * notice is retained. You may extract any or all information contained
X * in this file for use in your own programs
X *
X ***************************************************************************/
X
X
X/****************************************************************************
X *
X * Color window template initialization and routines,
X * for colorwindow and cyclewindow
X *
X * Throughout this file, the COLOR_RED and COLOR_GREEN gadgets are in the
X * opposite order you would expect.
X *
X ***************************************************************************/
X
XSTATIC USHORT RGBData[] =
X{
X 0x0000, 0xFC00, 0x6600, 0x6600, 0x7C00, 0x6C00, 0x6600, 0xE300,
X 0x0000, 0x0000, 0x0000, 0x0000, 0x3C00, 0x6600, 0xC000, 0xCE00,
X 0xC600, 0x6600, 0x3E00, 0x0000, 0x0000, 0x0000, 0x0000, 0xFC00,
X 0x6600, 0x6600, 0x7C00, 0x6600, 0x6600, 0xFC00, 0x0000,
X /* The rest is for the Rainbow Image */
X ~0x0000, ~0xFC00, ~0x6600, ~0x6600, ~0x7C00, ~0x6C00, ~0x6600, ~0xE300,
X ~0x0000, ~0x0000, ~0x0000, ~0x0000, ~0x3C00, ~0x6600, ~0xC000, ~0xCE00,
X ~0xC600, ~0x6600, ~0x3E00, ~0x0000, ~0x0000, ~0x0000, ~0x0000, ~0xFC00,
X ~0x6600, ~0x6600, ~0x7C00, ~0x6600, ~0x6600, ~0xFC00, ~0x0000
X};
X
X#define MID_RGB_AIN (sizeof(RGBData)/sizeof(RGBData[0])/2)
X
X
XSTATIC struct Image ColorRGBImage =
X{
X 3, 0,
X 8,
X 31,
X 1,
X &RGBData[0],
X 0x1, 0x0,
X NULL,
X};
X
XSTATIC struct Image ColorRAINImage =
X{
X 3, 0,
X 8,
X 31,
X 1,
X &RGBData[MID_RGB_AIN],
X 0x1, 0x0,
X NULL,
X};
X
XSTATIC SHORT ClusterBorderVectors[] =
X{
X -1, -1,
X -1, COLOR_CLUSTER_HEIGHT,
X COLOR_CLUSTER_WIDTH, COLOR_CLUSTER_HEIGHT,
X COLOR_CLUSTER_WIDTH, -1,
X -1, -1,
X};
X
X
XSTATIC struct Border ColorClusterBorder =
X{
X 0, 0,
X 1, 0,
X JAM1,
X 5,
X &ClusterBorderVectors[0],
X NULL,
X};
X
XSTATIC struct IntuiText ColorClusterText[4] =
X{ /* "COPY" */
X {
X 1, 0,
X JAM2,
X 2 + CHARACTER_WIDTH, 1,
X &SafeFont,
X (UBYTE *) "COPY",
X NULL,
X }, /* "RANGE" */
X {
X 1, 0,
X JAM2,
X 2 + (CHARACTER_WIDTH >> 1), 1,
X &SafeFont,
X (UBYTE *) "RANGE",
X NULL,
X }, /* "OK" */
X {
X 1, 0,
X JAM2,
X 2 + (CHARACTER_WIDTH << 1), 1,
X &SafeFont,
X (UBYTE *) "OK",
X NULL,
X }, /* "CANCEL" */
X {
X 1, 0,
X JAM2,
X 2, 1,
X &SafeFont,
X (UBYTE *) "CANCEL",
X NULL,
X },
X};
X
XSTATIC struct IntuiText LessMoreText =
X/* "COPY" "<>" */
X{
X 1, 0,
X JAM2,
X 2 + (CHARACTER_WIDTH >> 1), 1,
X &SafeFont,
X (UBYTE *) " <-> ",
X NULL,
X};
XSTATIC struct IntuiText MoreLessText =
X{ /* "RANGE" "><" */
X 1, 0,
X JAM2,
X 2 + (CHARACTER_WIDTH >> 1), 1,
X &SafeFont,
X (UBYTE *) " >-< ",
X NULL,
X};
X
X/* ======================================================================= */
X/* ======================================================================= */
X/* ======================================================================= */
X
X/* RJM anchor */
XSTATIC struct Image ColorPropsImages[3];
XSTATIC struct Image SuperColorImages[MAXCOL];
X
X
XSTATIC struct PropInfo ColorPropsInfos[3] =
X{
X { /* COLOR_GREEN */
X AUTOKNOB | FREEHORIZ,
X 0,
X 0,
X COLOR_KNOB_BODY,
X 0,
X 0, 0, 0, 0, 0, 0,
X },
X { /* COLOR_RED */
X AUTOKNOB | FREEHORIZ,
X 0,
X 0,
X COLOR_KNOB_BODY,
X 0,
X 0, 0, 0, 0, 0, 0,
X },
X { /* COLOR_BLUE */
X AUTOKNOB | FREEHORIZ,
X 0,
X 0,
X COLOR_KNOB_BODY,
X 0,
X 0, 0, 0, 0, 0, 0,
X }
X};
X
X
XSTATIC struct Gadget ColorTemplateGadgets[COLOR_GADGETS_COUNT] =
X{
X { /* COLOR_00 */
X NULL,
X COLOR_BOX_LEFT + ((00 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((00 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[00],
X (APTR)&SuperColorImages[00],
X NULL,
X NULL,
X NULL,
X 00,
X NULL,
X },
X { /* COLOR_01 */
X &ColorTemplateGadgets[00],
X COLOR_BOX_LEFT + ((01 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((01 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[01],
X (APTR)&SuperColorImages[01],
X NULL,
X NULL,
X NULL,
X 01,
X NULL,
X },
X { /* COLOR_02 */
X &ColorTemplateGadgets[01],
X COLOR_BOX_LEFT + ((02 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((02 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[02],
X (APTR)&SuperColorImages[02],
X NULL,
X NULL,
X NULL,
X 02,
X NULL,
X },
X { /* COLOR_03 */
X &ColorTemplateGadgets[02],
X COLOR_BOX_LEFT + ((03 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((03 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[03],
X (APTR)&SuperColorImages[03],
X NULL,
X NULL,
X NULL,
X 03,
X NULL,
X },
X { /* COLOR_04 */
X &ColorTemplateGadgets[03],
X COLOR_BOX_LEFT + ((04 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((04 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[04],
X (APTR)&SuperColorImages[04],
X NULL,
X NULL,
X NULL,
X 04,
X NULL,
X },
X { /* COLOR_05 */
X &ColorTemplateGadgets[04],
X COLOR_BOX_LEFT + ((05 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((05 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[05],
X (APTR)&SuperColorImages[05],
X NULL,
X NULL,
X NULL,
X 05,
X NULL,
X },
X { /* COLOR_06 */
X &ColorTemplateGadgets[05],
X COLOR_BOX_LEFT + ((06 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((06 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[06],
X (APTR)&SuperColorImages[06],
X NULL,
X NULL,
X NULL,
X 06,
X NULL,
X },
X { /* COLOR_07 */
X &ColorTemplateGadgets[06],
X COLOR_BOX_LEFT + ((07 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((07 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[07],
X (APTR)&SuperColorImages[07],
X NULL,
X NULL,
X NULL,
X 07,
X NULL,
X },
X { /* COLOR_08 */
X &ColorTemplateGadgets[07],
X COLOR_BOX_LEFT + ((8 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((8 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[8],
X (APTR)&SuperColorImages[8],
X NULL,
X NULL,
X NULL,
X 8,
X NULL,
X },
X { /* COLOR_09 */
X &ColorTemplateGadgets[8],
X COLOR_BOX_LEFT + ((9 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((9 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[9],
X (APTR)&SuperColorImages[9],
X NULL,
X NULL,
X NULL,
X 9,
X NULL,
X },
X { /* COLOR_10 */
X &ColorTemplateGadgets[9],
X COLOR_BOX_LEFT + ((10 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((10 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[10],
X (APTR)&SuperColorImages[10],
X NULL,
X NULL,
X NULL,
X 10,
X NULL,
X },
X { /* COLOR_11 */
X &ColorTemplateGadgets[10],
X COLOR_BOX_LEFT + ((11 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((11 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[11],
X (APTR)&SuperColorImages[11],
X NULL,
X NULL,
X NULL,
X 11,
X NULL,
X },
X { /* COLOR_12 */
X &ColorTemplateGadgets[11],
X COLOR_BOX_LEFT + ((12 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((12 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[12],
X (APTR)&SuperColorImages[12],
X NULL,
X NULL,
X NULL,
X 12,
X NULL,
X },
X { /* COLOR_13 */
X &ColorTemplateGadgets[12],
X COLOR_BOX_LEFT + ((13 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((13 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[13],
X (APTR)&SuperColorImages[13],
X NULL,
X NULL,
X NULL,
X 13,
X NULL,
X },
X { /* COLOR_14 */
X &ColorTemplateGadgets[13],
X COLOR_BOX_LEFT + ((14 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((14 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[14],
X (APTR)&SuperColorImages[14],
X NULL,
X NULL,
X NULL,
X 14,
X NULL,
X },
X { /* COLOR_15 */
X &ColorTemplateGadgets[14],
X COLOR_BOX_LEFT + ((15 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((15 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[15],
X (APTR)&SuperColorImages[15],
X NULL,
X NULL,
X NULL,
X 15,
X NULL,
X },
X { /* COLOR_16 */
X &ColorTemplateGadgets[15],
X COLOR_BOX_LEFT + ((16 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((16 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[16],
X (APTR)&SuperColorImages[16],
X NULL,
X NULL,
X NULL,
X 16,
X NULL,
X },
X { /* COLOR_17 */
X &ColorTemplateGadgets[16],
X COLOR_BOX_LEFT + ((17 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((17 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[17],
X (APTR)&SuperColorImages[17],
X NULL,
X NULL,
X NULL,
X 17,
X NULL,
X },
X { /* COLOR_18 */
X &ColorTemplateGadgets[17],
X COLOR_BOX_LEFT + ((18 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((18 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[18],
X (APTR)&SuperColorImages[18],
X NULL,
X NULL,
X NULL,
X 18,
X NULL,
X },
X { /* COLOR_19 */
X &ColorTemplateGadgets[18],
X COLOR_BOX_LEFT + ((19 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((19 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[19],
X (APTR)&SuperColorImages[19],
X NULL,
X NULL,
X NULL,
X 19,
X NULL,
X },
X { /* COLOR_20 */
X &ColorTemplateGadgets[19],
X COLOR_BOX_LEFT + ((20 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((20 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[20],
X (APTR)&SuperColorImages[20],
X NULL,
X NULL,
X NULL,
X 20,
X NULL,
X },
X { /* COLOR_21 */
X &ColorTemplateGadgets[20],
X COLOR_BOX_LEFT + ((21 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((21 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[21],
X (APTR)&SuperColorImages[21],
X NULL,
X NULL,
X NULL,
X 21,
X NULL,
X },
X { /* COLOR_22 */
X &ColorTemplateGadgets[21],
X COLOR_BOX_LEFT + ((22 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((22 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[22],
X (APTR)&SuperColorImages[22],
X NULL,
X NULL,
X NULL,
X 22,
X NULL,
X },
X { /* COLOR_23 */
X &ColorTemplateGadgets[22],
X COLOR_BOX_LEFT + ((23 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((23 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[23],
X (APTR)&SuperColorImages[23],
X NULL,
X NULL,
X NULL,
X 23,
X NULL,
X },
X { /* COLOR_24 */
X &ColorTemplateGadgets[23],
X COLOR_BOX_LEFT + ((24 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((24 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[24],
X (APTR)&SuperColorImages[24],
X NULL,
X NULL,
X NULL,
X 24,
X NULL,
X },
X { /* COLOR_25 */
X &ColorTemplateGadgets[24],
X COLOR_BOX_LEFT + ((25 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((25 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[25],
X (APTR)&SuperColorImages[25],
X NULL,
X NULL,
X NULL,
X 25,
X NULL,
X },
X { /* COLOR_26 */
X &ColorTemplateGadgets[25],
X COLOR_BOX_LEFT + ((26 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((26 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[26],
X (APTR)&SuperColorImages[26],
X NULL,
X NULL,
X NULL,
X 26,
X NULL,
X },
X { /* COLOR_27 */
X &ColorTemplateGadgets[26],
X COLOR_BOX_LEFT + ((27 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((27 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[27],
X (APTR)&SuperColorImages[27],
X NULL,
X NULL,
X NULL,
X 27,
X NULL,
X },
X { /* COLOR_28 */
X &ColorTemplateGadgets[27],
X COLOR_BOX_LEFT + ((28 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((28 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[28],
X (APTR)&SuperColorImages[28],
X NULL,
X NULL,
X NULL,
X 28,
X NULL,
X },
X { /* COLOR_29 */
X &ColorTemplateGadgets[28],
X COLOR_BOX_LEFT + ((29 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((29 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[29],
X (APTR)&SuperColorImages[29],
X NULL,
X NULL,
X NULL,
X 29,
X NULL,
X },
X { /* COLOR_30 */
X &ColorTemplateGadgets[29],
X COLOR_BOX_LEFT + ((30 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((30 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[30],
X (APTR)&SuperColorImages[30],
X NULL,
X NULL,
X NULL,
X 30,
X NULL,
X },
X { /* COLOR_31 */
X &ColorTemplateGadgets[30],
X COLOR_BOX_LEFT + ((31 & 0x7) * COLOR_COLOR_WIDTH),
X COLOR_COLOR_TOP + ((31 >> 3) * COLOR_COLOR_HEIGHT),
X COLOR_COLOR_WIDTH,
X COLOR_COLOR_HEIGHT,
X GADGIMAGE | GADGHNONE,
X GADGIMMEDIATE,
X BOOLGADGET,
X (APTR)&SuperColorImages[31],
X (APTR)&SuperColorImages[31],
X NULL,
X NULL,
X NULL,
X 31,
X NULL,
X },
X { /* COLOR_COPY */
X &ColorTemplateGadgets[31],
X COLOR_CLUSTER_LEFT,
X COLOR_CLUSTER_TOP + (00 * (COLOR_CLUSTER_HEIGHT + 3)),
X COLOR_CLUSTER_WIDTH,
X COLOR_CLUSTER_HEIGHT,
X GADGHCOMP,
X RELVERIFY,
X BOOLGADGET,
X (APTR)&ColorClusterBorder,
X NULL,
X &ColorClusterText[00],
X NULL,
X NULL,
X COLOR_COPY,
X NULL,
X },
X { /* COLOR_RANGE */
X &ColorTemplateGadgets[COLOR_COPY],
X COLOR_CLUSTER_LEFT,
X COLOR_CLUSTER_TOP + (01 * (COLOR_CLUSTER_HEIGHT + 3)),
X COLOR_CLUSTER_WIDTH,
X COLOR_CLUSTER_HEIGHT,
X GADGHCOMP,
X RELVERIFY,
X BOOLGADGET,
X (APTR)&ColorClusterBorder,
X NULL,
X &ColorClusterText[01],
X NULL,
X NULL,
X COLOR_RANGE,
X NULL,
X },
X { /* COLOR_OK */
X &ColorTemplateGadgets[COLOR_RANGE],
X COLOR_CLUSTER_LEFT,
X COLOR_CLUSTER_TOP + (02 * (COLOR_CLUSTER_HEIGHT + 3)),
X COLOR_CLUSTER_WIDTH,
X COLOR_CLUSTER_HEIGHT,
X GADGHCOMP,
X RELVERIFY,
X BOOLGADGET,
X (APTR)&ColorClusterBorder,
X NULL,
X &ColorClusterText[02],
X NULL,
X NULL,
X COLOR_OK,
X NULL,
X },
X { /* COLOR_CANCEL */
X &ColorTemplateGadgets[COLOR_OK],
X COLOR_CLUSTER_LEFT,
X COLOR_CLUSTER_TOP + (03 * (COLOR_CLUSTER_HEIGHT + 3)),
X COLOR_CLUSTER_WIDTH,
X COLOR_CLUSTER_HEIGHT,
X GADGHCOMP,
X RELVERIFY,
X BOOLGADGET,
X (APTR)&ColorClusterBorder,
X NULL,
X &ColorClusterText[03],
X NULL,
X NULL,
X COLOR_CANCEL,
X NULL,
X },
X { /* COLOR_GREEN */
X &ColorTemplateGadgets[COLOR_CANCEL],
X COLOR_PROP_LEFT,
X COLOR_PROP_TOP + (01 * (COLOR_PROP_HEIGHT + 1)),
X COLOR_PROP_WIDTH,
X COLOR_PROP_HEIGHT,
X GADGIMAGE | GADGHNONE, /* GADGHNONE doesn't seem to work! */
X FOLLOWMOUSE, /* The knob still reverses when selected */
X PROPGADGET, /* even if I GADGHIMAGE with 2 of the */
X (APTR)&ColorPropsImages[01], /* same ColorPropsImages */
X NULL,
X NULL,
X NULL,
X (APTR)&ColorPropsInfos[01],
X COLOR_GREEN,
X NULL,
X },
X { /* COLOR_RED */
X &ColorTemplateGadgets[COLOR_GREEN],
X COLOR_PROP_LEFT,
X COLOR_PROP_TOP + (00 * (COLOR_PROP_HEIGHT + 1)),
X COLOR_PROP_WIDTH,
X COLOR_PROP_HEIGHT,
X GADGIMAGE | GADGHNONE,
X FOLLOWMOUSE,
X PROPGADGET,
X (APTR)&ColorPropsImages[00],
X NULL,
X NULL,
X NULL,
X (APTR)&ColorPropsInfos[00],
X COLOR_RED,
X NULL,
X },
X { /* COLOR_BLUE */
X &ColorTemplateGadgets[COLOR_RED],
X COLOR_PROP_LEFT,
X COLOR_PROP_TOP + (02 * (COLOR_PROP_HEIGHT + 1)),
X COLOR_PROP_WIDTH,
X COLOR_PROP_HEIGHT,
X GADGIMAGE | GADGHNONE,
X FOLLOWMOUSE,
X PROPGADGET,
X (APTR)&ColorPropsImages[02],
X NULL,
X NULL,
X NULL,
X (APTR)&ColorPropsInfos[02],
X COLOR_BLUE,
X NULL,
X },
X { /* COLOR_AIN_RGB */
X &ColorTemplateGadgets[COLOR_BLUE],
X COLOR_AIN_LEFT,
X COLOR_AIN_TOP,
X CHARACTER_WIDTH + 5,
X COLOR_BOX_BOTTOM - COLOR_BOX_TOP + 1,
X GADGHIMAGE | GADGIMAGE /*| SELECTED*/,
X TOGGLESELECT | RELVERIFY,
X BOOLGADGET,
X (APTR)&ColorRGBImage,
X (APTR)&ColorRAINImage,
X NULL,
X NULL,
X NULL,
X COLOR_AIN_RGB,
X NULL,
X }
X};
X
X
X
X/****************************************************************************
X * MAND5.C - Color Window
X * Mandelbrot Self-Squared Dragon Generator
X * For the Commodore Amiga
X * Version 2.01
X *
X * Copyright (C) 1986, =Robert J. Mical=
X * Placed in the Public Domain
X *
X * This program may be distributed free of charge as long as the above
X * notice is retained. You may extract any or all information contained
X * in this file for use in your own programs
X *
X ***************************************************************************/
X
X
X/****************************************************************************
X *
X * Color initialization and routines
X *
X ***************************************************************************/
X
X#define COPYCOLOR 1
X#define RANGE_FIRST 2
X#define RANGE_SECOND 3
XSTATIC USHORT ColorMode;
X
XSTATIC USHORT SavePalette[MAXCOL];
X
X#define COLOR_IDCMP_FLAGS (GADGETDOWN | GADGETUP | MOUSEMOVE)
X
X#define MIN(x,y) (x<y ? x : y)
X
X
XSTATIC struct NewWindow ColorNewWindow =
X{
X/* SHORT LeftEdge, TopEdge; /* screen dimensions of window */
X/* SHORT Width, Height; /* screen dimensions of window */
X DEFAULT_WINDOW_LEFT, DEFAULT_WINDOW_TOP,
X COLORWINDOW_WIDTH, COLORWINDOW_HEIGHT,
X
X/* UBYTE DetailPen, BlockPen; /* for bar/border/gadget rendering */
X -1, -1,
X
X/* ULONG IDCMPFlags; /* User-selected IDCMP flags */
X NULL,
X
X/* ULONG Flags; /* see Window struct for defines */
X SMART_REFRESH | NOCAREREFRESH | WINDOWDRAG | WINDOWDEPTH | ACTIVATE,
X
X/* struct Gadget *FirstGadget;*/
X NULL,
X
X/* struct Image *CheckMark;*/
X NULL,
X
X/* UBYTE *Title; /* the title text for this window */
X (UBYTE *)"Palette \xE0 la =RJ=", /* a` \340 */
X
X/* struct Screen *Screen;*/
X NULL,
X
X/* struct BitMap *BitMap;*/
X NULL,
X
X/* SHORT MinWidth, MinHeight; /* minimums */
X 0, 0,
X/* SHORT MaxWidth, MaxHeight; /* maximums */
X 0, 0,
X
X/* USHORT Type;*/
X CUSTOMSCREEN,
X};
X
XSTATIC SHORT CurrentColor;
XSTATIC SHORT RangeFirst; /* the first selection of the range-color pair */
XSTATIC SHORT MaxColor;
XSTATIC BOOL RainbowMode = FALSE;
XSHORT RainbowDistance = 0;
XSHORT RainbowRMax = 1000;
XSHORT RainbowGMax = 1000;
XSHORT RainbowBMax = 1000;
XSHORT RRMax = -1, RGMax = -1, RBMax = -1;
X
X
Xstruct Window *ColorWindow = NULL;
XSTATIC struct ViewPort *vp;
X
X/* ======================================================================= */
X/* ======================================================================= */
X/* ======================================================================= */
X
XBOOL OpenColorWindow(w)
Xregister struct Window *w;
X{
X register LONG i;
X extern LONG TypeOfMem();
X
X vp = &w->WScreen->ViewPort;
X ColorMode = NULL;
X
X if (ColorWindow) {
X WindowToFront(ColorWindow);
X return TRUE;
X }
X
X MaxColor = (1 << w->WScreen->BitMap.Depth) - 1;
X if (MaxColor > MAXCOL-1) MaxColor = MAXCOL-1;
X for (i = 0; i < MAXCOL; i++) SavePalette[i] = GetRGB4(vp->ColorMap, i);
X
X /* In case we have uninitialised or dumb values */
X if (RainbowDistance < RAIN_MIN_DISTANCE ||
X RainbowDistance > RAIN_MAX_DISTANCE) {
X RainbowDistance = 1 + MaxColor / 3;
X goto defaults;
X }
X if (RainbowRMax > MaxColor ||
X RainbowGMax > MaxColor ||
X RainbowBMax > MaxColor) {
Xdefaults:
X RainbowRMax = 0;
X RainbowGMax = (MaxColor+2) / 3;
X RainbowBMax = 2 * (MaxColor+2) / 3;
X }
X
X ColorTemplateGadgets[COLOR_AIN_RGB].Flags &= ~SELECTED;
X RainbowMode = FALSE;
X ColorTemplateGadgets[COLOR_COPY].GadgetText = &ColorClusterText[0];
X ColorTemplateGadgets[COLOR_RANGE].GadgetText = &ColorClusterText[1];
X
X /* Make sure the image data is in CHIP memory */
X if (TypeOfMem(&RGBData[61]) & MEMF_CHIP) {
X ColorRGBImage.ImageData = &RGBData[0];
X ColorRAINImage.ImageData = &RGBData[MID_RGB_AIN];
X } else {
X#ifdef DEBUG2
X fprintf(stderr, "Allocate CHIP memory (%d bytes) for RGBData\n",
X sizeof(RGBData));
X#endif
X if ((ColorRGBImage.ImageData = AllocMem((ULONG)sizeof(RGBData), MEMF_CHIP))
X == NULL) return FALSE;
X ColorRAINImage.ImageData = ColorRGBImage.ImageData + MID_RGB_AIN;
X /* Copy the data */
X for (i=0; i< sizeof(RGBData)/sizeof(RGBData[0]); i++)
X ColorRGBImage.ImageData[i] = RGBData[i];
X }
X
X ColorNewWindow.Screen = w->WScreen;
X ColorNewWindow.Type = w->WScreen->Flags & SCREENTYPE;
X ColorNewWindow.IDCMPFlags = NULL;
X ColorNewWindow.FirstGadget
X = &ColorTemplateGadgets[COLOR_GADGETS_COUNT - 1];
X ColorTemplateGadgets[COLOR_COPY].NextGadget =
X &ColorTemplateGadgets[MaxColor];
X
X if (ColorNewWindow.LeftEdge+ColorNewWindow.Width > w->WScreen->Width) {
X ColorNewWindow.LeftEdge = (w->WScreen->Width-ColorNewWindow.Width) / 2;
X }
X if (ColorNewWindow.TopEdge+ColorNewWindow.Height > w->WScreen->Height) {
X ColorNewWindow.TopEdge = (w->WScreen->Height-ColorNewWindow.Height) / 2;
X }
X CurrentColor = 0;
X SetColorProps();
X InitSuperColors();
X
X if ((ColorWindow = (struct Window *)OpenWindow(&ColorNewWindow)) == NULL) {
X /* fputs("no memory!\n", console); */
X return FALSE;
X }
X ColorWindow->UserPort = w->UserPort;
X ModifyIDCMP(ColorWindow, COLOR_IDCMP_FLAGS);
X
X DrawColorWindow();
X
X return TRUE;
X}
X
X
XVOID CloseColorWindow(accept)
XBOOL accept;
X{
X /* register LONG i; */
X
X if (ColorWindow == NULL) return;
X
X /* ClearMenuStrip(ColorWindow); */
X ColorNewWindow.LeftEdge = ColorWindow->LeftEdge;
X ColorNewWindow.TopEdge = ColorWindow->TopEdge;
X
X /* ColorWindow->UserPort = NULL; */
X /* CloseWindow(ColorWindow); */
X CloseWindowSafely(ColorWindow);
X ColorWindow = NULL;
X
X /* Return the allocated CHIP memory */
X if (ColorRGBImage.ImageData != &RGBData) {
X#ifdef DEBUG2
X fprintf(stderr,"Freeing CHIP mem of RGBData\n");
X#endif
X FreeMem(ColorRGBImage.ImageData, (ULONG)sizeof(RGBData));
X }
X
X if (NOT accept) LoadRGB4(vp, &SavePalette[0], MaxColor + 1L);
X}
X
X
XSTATIC VOID ColorRange(first, last)
XSHORT first, last;
X{
X USHORT i;
X LONG whole, redfraction, greenfraction, bluefraction;
X USHORT rgb;
X SHORT firstred, firstgreen, firstblue;
X SHORT lastred, lastgreen, lastblue;
X SHORT workred, workgreen, workblue;
X
X if (first > last) {
X i = first;
X first = last;
X last = i;
X }
X
X /* I need to see a spread of at least two, where there's at least one
X * spot between the endpoints, else there's no work to do so I
X * might as well just return now.
X */
X if (first >= last - 1) return;
X
X rgb = GetRGB4(vp->ColorMap, (ULONG) first);
X firstred = (rgb >> 8) & 0xF;
X firstgreen = (rgb >> 4) & 0xF;
X firstblue = (rgb >> 0) & 0xF;
X
X rgb = GetRGB4(vp->ColorMap, (ULONG) last);
X lastred = (rgb >> 8) & 0xF;
X lastgreen = (rgb >> 4) & 0xF;
X lastblue = (rgb >> 0) & 0xF;
X
X whole = ((LONG) lastred - firstred) << 16;
X redfraction = whole / (last - first);
X whole = ((LONG) lastgreen - firstgreen) << 16;
X greenfraction = whole / (last - first);
X whole = ((LONG) lastblue - firstblue) << 16;
X bluefraction = whole / (last - first);
X
X for (i = first + 1; i < last; i++) {
X lastred = (redfraction * (i - first) + ONE_HALF) >> 16;
X workred = firstred + lastred;
X lastgreen = (greenfraction * (i - first) + ONE_HALF) >> 16;
X workgreen = firstgreen + lastgreen;
X lastblue = (bluefraction * (i - first) + ONE_HALF) >> 16;
X workblue = firstblue + lastblue;
X SetRGB4(vp, (ULONG) i, (ULONG) workred, (ULONG) workgreen,
X (ULONG) workblue);
X }
X}
X
X
XSTATIC BOOL ColorGadgetGotten(gadget)
Xstruct Gadget *gadget;
X{
X ULONG rgb, pen;
X struct RastPort *RPort;
X SHORT green, red, blue;
X
X RPort = ColorWindow->RPort;
X
X /* Have we got a color specifier? */
X if (NOT RainbowMode && gadget->GadgetID <= MaxColor) {
X /* Yes, it's a color gadget. Set this pen number */
X pen = gadget->GadgetID;
X /* First, were we in COPY COLOR mode? */
X if (ColorMode == COPYCOLOR) {
X /* Ok, copy old color here first! */
X rgb = GetRGB4(vp->ColorMap, (ULONG) CurrentColor);
X SetRGB4(vp, pen, rgb >> 8, rgb >> 4, rgb);
X ColorMode = NULL;
X }
X else if (ColorMode == RANGE_FIRST) {
X ColorMode = RANGE_SECOND;
X RangeFirst = pen;
X }
X else if (ColorMode == RANGE_SECOND) {
X ColorMode = NULL;
X ColorRange(RangeFirst, (SHORT) pen);
X }
X CurrentColor = pen;
X ColorRectFill(RPort, (SHORT) pen);
X
X red = RemoveGadget(ColorWindow, &ColorTemplateGadgets[COLOR_RED]);
X green = RemoveGadget(ColorWindow,&ColorTemplateGadgets[COLOR_GREEN]);
X blue = RemoveGadget(ColorWindow, &ColorTemplateGadgets[COLOR_BLUE]);
X SetColorProps();
X AddGadget(ColorWindow, &ColorTemplateGadgets[COLOR_BLUE],
X (LONG) blue);
X AddGadget(ColorWindow, &ColorTemplateGadgets[COLOR_GREEN],
X (LONG) green);
X AddGadget(ColorWindow, &ColorTemplateGadgets[COLOR_RED],
X (LONG) red);
X RefreshGadgets(&ColorTemplateGadgets[COLOR_GADGETS_COUNT - 1],
X ColorWindow);
X }
X
X else if (RainbowMode && gadget->GadgetID <= MaxColor) {
X /* Yes, it's a color gadget. Get its old color back. */
X pen = gadget->GadgetID;
X red = (SavePalette[pen] & 0xF00) >> 8;
X green = (SavePalette[pen] & 0x0F0) >> 4;
X blue = (SavePalette[pen] & 0x00F) >> 0;
X SetRGB4(vp, pen, (LONG) red, (LONG) green, (LONG) blue);
X }
X
X else switch (gadget->GadgetID) {
X case COLOR_OK:
X CloseColorWindow((BOOL) TRUE);
X return FALSE;
X break;
X case COLOR_CANCEL:
X CloseColorWindow((BOOL) FALSE);
X return FALSE;
X break;
X case COLOR_COPY:
X if (RainbowMode) { /* Gadget now has an alternate meaning */
X if (++RainbowDistance > RAIN_MAX_DISTANCE)
X RainbowDistance = RAIN_MAX_DISTANCE;
X RRMax = -2; /* Force color updating */
X ModifyColors();
X }
X else ColorMode = COPYCOLOR;
X break;
X case COLOR_RANGE:
X if (RainbowMode) {
X if (--RainbowDistance < RAIN_MIN_DISTANCE)
X RainbowDistance = RAIN_MIN_DISTANCE;
X RRMax = -3; /* Force color updating */
X ModifyColors();
X }
X else ColorMode = RANGE_FIRST;
X break;
X case COLOR_AIN_RGB:
X /* blue = RemoveGList(ColorWindow,
X &ColorTemplateGadgets[COLOR_BLUE], 3L); */
X red = RemoveGadget(ColorWindow, &ColorTemplateGadgets[COLOR_RED]);
X green = RemoveGadget(ColorWindow,&ColorTemplateGadgets[COLOR_GREEN]);
X blue = RemoveGadget(ColorWindow, &ColorTemplateGadgets[COLOR_BLUE]);
X if (gadget->Flags & SELECTED) { /* We want Rainbow Mode */
X RainbowMode = TRUE;
X ColorTemplateGadgets[COLOR_COPY].GadgetText = &LessMoreText;
X ColorTemplateGadgets[COLOR_RANGE].GadgetText = &MoreLessText;
X RRMax = -4; /* Force color updating */
X SetColorProps();
X ModifyColors();
X } else { /* We want our normal RGB mode back */
X RainbowMode = FALSE;
X ColorTemplateGadgets[COLOR_COPY].GadgetText =
X &ColorClusterText[0];
X ColorTemplateGadgets[COLOR_RANGE].GadgetText =
X &ColorClusterText[1];
X SetColorProps();
X }
X /* AddGList(ColorWindow, &ColorTemplateGadgets[COLOR_BLUE],
X (LONG) blue, 3L, NULL); */
X AddGadget(ColorWindow, &ColorTemplateGadgets[COLOR_BLUE],
X (LONG) blue);
X AddGadget(ColorWindow, &ColorTemplateGadgets[COLOR_GREEN],
X (LONG) green);
X AddGadget(ColorWindow, &ColorTemplateGadgets[COLOR_RED],
X (LONG) red);
X RefreshGadgets(&ColorTemplateGadgets[COLOR_GADGETS_COUNT - 1],
X ColorWindow);
X break;
X
X }
X return TRUE;
X}
X
XSHORT mod(a,b)
XSHORT a,b;
X{
X if (a < 0) return a+b;
X if (a >= b) return a-b;
X return a;
X}
X
XModifyColors()
X{
X ULONG newred, newgreen, newblue;
X
X newred = ((struct PropInfo *)
X ColorTemplateGadgets[COLOR_RED].SpecialInfo)->HorizPot;
X newgreen = ((struct PropInfo *)
X ColorTemplateGadgets[COLOR_GREEN].SpecialInfo)->HorizPot;
X newblue = ((struct PropInfo *)
X ColorTemplateGadgets[COLOR_BLUE].SpecialInfo)->HorizPot;
X
X if (RainbowMode) {
X USHORT NewPalette[MAXCOL];
X SHORT i;
X SHORT distance;
X
X for (i=0; i<MAXCOL; i++) NewPalette[i] = 0;
X NewPalette[0] = GetRGB4(vp->ColorMap, 0L);
X RainbowRMax = (newred * MaxColor + ONE_HALF) >> 16;
X RainbowGMax = (newgreen * MaxColor + ONE_HALF) >> 16;
X RainbowBMax = (newblue * MaxColor + ONE_HALF) >> 16;
X
X if (RainbowRMax == RRMax && RainbowGMax == RGMax &&
X RainbowBMax == RBMax) return;
X
X#ifdef DEBUG2
X fprintf(stderr, "ModifyColors: d/r/g/b = %d %d %d %d\n",
X RainbowDistance,
X RainbowRMax,
X RainbowGMax,
X RainbowBMax);
X#endif
X
X RRMax = RainbowRMax;
X RGMax = RainbowGMax;
X RBMax = RainbowBMax;
X
X for (distance=0; distance < RainbowDistance; distance++) {
X i = 15 - (16.0 * ((float) distance / RainbowDistance)) + 0.5;
X /* i = 15 - ((distance<<16)/RainbowDistance + (1<<11)) >> 12; */
X if (i < 0) i = 0;
X
X NewPalette[1 + mod(RainbowBMax + distance, MaxColor)] |= i;
X NewPalette[1 + mod(RainbowBMax - distance, MaxColor)] |= i;
X i <<= 4;
X NewPalette[1 + mod(RainbowGMax + distance, MaxColor)] |= i;
X NewPalette[1 + mod(RainbowGMax - distance, MaxColor)] |= i;
X i <<= 4;
X NewPalette[1 + mod(RainbowRMax + distance, MaxColor)] |= i;
X NewPalette[1 + mod(RainbowRMax - distance, MaxColor)] |= i;
X }
X
X LoadRGB4(vp, &NewPalette[0], MaxColor + 1L);
X } else { /* Normal RGB mode */
X SetRGB4(vp, (ULONG) CurrentColor, newred >> 12, newgreen >> 12,
X newblue >> 12);
X }
X}
X
X
X
XSTATIC DrawColorWindow()
X{
X struct RastPort *RPort;
X
X RPort = ColorWindow->RPort;
X
X ColorRectFill(RPort, CurrentColor);
X SetAPen(RPort, 1L);
X SetDrMd(RPort, JAM1);
X
X /* Border around ColorBox */
X RectDraw(RPort, (SHORT) (COLOR_BOX_LEFT-2), (SHORT) (COLOR_BOX_TOP-2),
X (SHORT) (COLOR_BOX_RIGHT+2), (SHORT) (COLOR_BOX_BOTTOM+2));
X /* Border around ColorTemplateGadgets */
X RectDraw(RPort, (SHORT) (COLOR_BOX_LEFT-2), (SHORT) (COLOR_COLOR_TOP-2),
X (SHORT) (COLOR_BOX_LEFT+((MIN(MaxColor+1,8)*COLOR_COLOR_WIDTH)+1)),
X (SHORT) (COLOR_COLOR_TOP+(((MaxColor+8)/8)*COLOR_COLOR_HEIGHT)+1));
X}
X
X
X
XSTATIC SetColorProps()
X{
X ULONG rgb, red, green, blue;
X
X if (RainbowMode) {
X red = ((ULONG) RainbowRMax << 16) / MaxColor;
X green = ((ULONG) RainbowGMax << 16) / MaxColor;
X blue = ((ULONG) RainbowBMax << 16) / MaxColor;
X } else {
X rgb = GetRGB4(vp->ColorMap, (ULONG) CurrentColor);
X red = (rgb & 0xF00) << 4 | (rgb & 0xF00) << 0;
X green = (rgb & 0x0F0) << 8 | (rgb & 0x0F0) << 4;
X blue = (rgb & 0x00F) << 12 | (rgb & 0x00F) << 8;
X }
X
X ((struct PropInfo *)ColorTemplateGadgets[COLOR_RED]
X .SpecialInfo)->HorizPot
X = red;
X ((struct PropInfo *)ColorTemplateGadgets[COLOR_GREEN]
X .SpecialInfo)->HorizPot
X = green;
X ((struct PropInfo *)ColorTemplateGadgets[COLOR_BLUE]
X .SpecialInfo)->HorizPot
X = blue;
X}
X
X
XSTATIC ColorRectFill(RPort, pen)
Xstruct RastPort *RPort;
XSHORT pen;
X{
X SetAPen(RPort, (ULONG) pen);
X SetDrMd(RPort, (ULONG) JAM2);
X WaitBOVP(vp);
X RectFill(RPort, (ULONG) COLOR_BOX_LEFT, (ULONG) COLOR_BOX_TOP,
X (ULONG) COLOR_BOX_RIGHT, (ULONG) COLOR_BOX_BOTTOM);
X}
X
X#ifdef notdef
X
Xvoid Palette(w) /* DoColorWindow() */
Xstruct Window *w;
X{
X struct IntuiMessage *message;
X ULONG class;
X struct Gadget *gadget;
X
X if (NOT OpenColorWindow(w)) return;
X
X FOREVER {
X Wait( 1L << ColorWindow->UserPort->mp_SigBit );
X while (message = (struct IntuiMessage *)
X GetMsg(ColorWindow->UserPort)) {
X class = message->Class;
X gadget = (struct Gadget *)(message->IAddress);
X ReplyMsg(message);
X
X switch (class) {
X case GADGETDOWN:
X case GADGETUP:
X if (ColorGadgetGotten(gadget) == FALSE) return;
X break;
X case MOUSEMOVE:
X ModifyColors();
X break;
X }
X }
X }
X}
X
X#else
X
Xvoid HandleColorWindow(message)
Xstruct IntuiMessage *message;
X{
X ULONG class;
X struct Gadget *gadget;
X
X class = message->Class;
X gadget = (struct Gadget *)(message->IAddress);
X ReplyMsg(message);
X
X if (ColorWindow == NULL)
X return;
X
X switch (class) {
X case GADGETDOWN:
X case GADGETUP:
X if (ColorGadgetGotten(gadget) == FALSE) return;
X break;
X case MOUSEMOVE:
X ModifyColors();
X break;
X }
X}
X
X#endif
X
XSTATIC InitSuperColors()
X{
X SHORT i;
X
X /* OK, initialize those Super Color Gadgets! */
X for (i = 0; i < MAXCOL; i++)
X {
X SuperColorImages[i].LeftEdge = 0;
X SuperColorImages[i].TopEdge = 0;
X SuperColorImages[i].Width = COLOR_COLOR_WIDTH;
X SuperColorImages[i].Height = 10;
X SuperColorImages[i].Depth = 0;
X SuperColorImages[i].ImageData = NULL;
X SuperColorImages[i].PlanePick = 0;
X SuperColorImages[i].PlaneOnOff = i;
X SuperColorImages[i].NextImage = NULL;
X }
X}
SHAR_EOF
echo "extracting Select.blk"
sed 's/^X//' << \SHAR_EOF > Select.blk
X/*
X * Select requester structure described in blk 2.0.
X */
X
X#define hbox(color, space, contents) \
X (h (| 1 color) (v (- 1 color) (b 0 space) (h (b space 0) \
X contents \
X (b space 0)) (b 0 space) (- 1 color) ) (| 1 color))
X
X#define tighthbox(color, contents) \
X (h f (| 1 color) (v (- 1 color) \
X (h contents) \
X (- 1 color)) (| 1 color) f )
X
X#define stringgad(num) \
X (h (t" 11") (b 10 0) (t"----"):num)
X
X
Xselect 3 2 1
X
X(v
X (b 0 8)
X (h f (b 10 0) (t"Select pen numbers per depth") f (b 10 0) )
X (b 0 10)
X (h
X (b 10 0)
X hbox(0, 3,
X (v
X stringgad(10) (b 0 2)
X stringgad(11) (b 0 2)
X stringgad(12) (b 0 2)
X stringgad(13) (b 0 2)
X stringgad(14) (b 0 2)
X stringgad(15) (b 0 2)
X stringgad(16) (b 0 2)
X stringgad(17) (b 0 2)
X stringgad(18) (b 0 2)
X stringgad(19)
X )
X )
X (b 10 0)
X hbox(0, 3,
X (v
X stringgad(20) (b 0 2)
X stringgad(21) (b 0 2)
X stringgad(22) (b 0 2)
X stringgad(23) (b 0 2)
X stringgad(24) (b 0 2)
X stringgad(25) (b 0 2)
X stringgad(26) (b 0 2)
X stringgad(27) (b 0 2)
X stringgad(28) (b 0 2)
X stringgad(29)
X )
X )
X (b 8 0)
X (v
X (h f
X hbox(3, 1, hbox(0, 1, (b 12 68):1 ))
X f
X )
X f
X hbox(3, 1, hbox(0, 2, (t" OK ")):3 )
X )
X (b 10 0)
X f
X )
X (b 0 8)
X)
X
X1 pv ,0 2700 :"PROPGADGETID" "v"
X3 :"POSGADGETID" "ve"
X
X10 s :"VALUEGADGETID+ 0" "vl"
X11 s :"VALUEGADGETID+ 1" "vl"
X12 s :"VALUEGADGETID+ 2" "vl"
X13 s :"VALUEGADGETID+ 3" "vl"
X14 s :"VALUEGADGETID+ 4" "vl"
X15 s :"VALUEGADGETID+ 5" "vl"
X16 s :"VALUEGADGETID+ 6" "vl"
X17 s :"VALUEGADGETID+ 7" "vl"
X18 s :"VALUEGADGETID+ 8" "vl"
X19 s :"VALUEGADGETID+ 9" "vl"
X20 s :"VALUEGADGETID+10" "vl"
X21 s :"VALUEGADGETID+11" "vl"
X22 s :"VALUEGADGETID+12" "vl"
X23 s :"VALUEGADGETID+13" "vl"
X24 s :"VALUEGADGETID+14" "vl"
X25 s :"VALUEGADGETID+15" "vl"
X26 s :"VALUEGADGETID+16" "vl"
X27 s :"VALUEGADGETID+17" "vl"
X28 s :"VALUEGADGETID+18" "vl"
X29 s :"VALUEGADGETID+19" "vl"
SHAR_EOF
echo "extracting Select.c"
sed 's/^X//' << \SHAR_EOF > Select.c
X/*
X * M A N D E L B R O T C O N S T R U C T I O N S E T
X *
X * (C) Copyright 1989 by Olaf Seibert.
X * Mandel may be freely distributed. See file 'doc/Notice' for details.
X *
X * Select() requester, as generated by blk 2.0 (by Stuart Ferguson).
X * Necessary changes to the generated file:
X * - delete definition of select_nbuf[][]
X */
X
X#include <exec/types.h>
X#include <intuition/intuition.h>
X#include "mandel.h"
X#ifdef DEBUG
X# include <stdio.h>
X# undef STATIC
X# define STATIC /* EMPTY */
X#endif
X
X#define NUMCHR 5
X
X/*extern UBYTE Buffer[5][20]; /* We want to re-use it for the
X * string gadgets here.
X */
Xextern UBYTE Buffer[20][5];
XUBYTE undo[NUMCHR];
X#define select_nbuf Buffer
X
X#define ta Topaz80
X#define ITXT_BPEN REQ_BF
X#define ITXT_DRMD JAM2
X#define BRD_DRMD JAM1
X#define REQ_LE 0
X#define REQ_TE 0
X#define REQ_FLG 0
X#define REQ_BF 1
X
X#define PROPGADGETID (NEGGADGETID+3)
X#define VALUEGADGETID (NEGGADGETID+10)
X
X#include "select.req"
X
X#define FIRST_STRGAD 0
X#define FIRST_SINFO 0
X#define FIRST_ITEXT 1
X#define NUMVALUES 20
X#define MAXVAL (MAXDEPTH - NUMVALUES)
X
Xvoid fillin(from, window)
Xregister int from;
Xregister struct Window *window;
X{
X register int to = from+20;
X register int i;
X
X if (window) {
X RemoveGList(window, &select_gad[FIRST_STRGAD], 20L);
X }
X
X for (i = 0; from < to; from++, i++) {
X sprintf(select_txt[FIRST_ITEXT+i].IText, "%4d", from);
X sprintf(select_sinfo[FIRST_SINFO+i].Buffer, "%d", (int)PenTable[from]);
X select_sinfo[FIRST_SINFO+i].LongInt = PenTable[from];
X }
X
X if (window) {
X AddGList(window, &select_gad[FIRST_STRGAD], 0L, 20L, &select_req);
X RefreshGList(&select_gad[FIRST_STRGAD], window, &select_req, 20L);
X PrintIText(select_req.ReqLayer->rp, &select_txt[FIRST_ITEXT], 0L, 0L);
X }
X}
X
Xvoid Select()
X{
X register int ID;
X register int base;
X register struct Window *window = NULL;
X int value;
X
X base = (select_pinfo[0].VertPot * (long) MAXVAL + 0x8000) >> 16;
X fillin(base, NULL);
X select_pinfo[0].VertBody = (MAXBODY * NUMVALUES) / (5*MAXVAL/4);
X
X window = MyRequest(&select_req, MainWindow);
X
X do {
X ID = WaitMyRequest(window);
X switch(ID) {
X case POSGADGETID: /* OK */
X break;
X case PROPGADGETID:
X base = (select_pinfo[0].VertPot * (long) MAXVAL + 0x8000) >> 16;
X fillin(base, window);
X break;
X default: /* some value */
X ID -= VALUEGADGETID;
X value = select_sinfo[FIRST_SINFO+ID].LongInt;
X if (value >= 0 && value < NumColors)
X PenTable[base + ID] = value;
X else
X DisplayBeep(MandelScreen);
X }
X } while (ID != POSGADGETID);
X
X EndMyRequest(&select_req, window, MainWindow);
X}
SHAR_EOF
echo "extracting Select.req"
sed 's/^X//' << \SHAR_EOF > Select.req
X#ifndef BRD_DRMD
X# define BRD_DRMD JAM1
X#endif
X
X#ifndef ITXT_BPEN
X# define ITXT_BPEN 0
X#endif
X
X#ifndef ITXT_DRMD
X# define ITXT_DRMD JAM1
X#endif
X
X#ifndef REQ_LE
X# define REQ_LE 0
X#endif
X
X#ifndef REQ_TE
X# define REQ_TE 0
X#endif
X
X#ifndef REQ_FLG
X# define REQ_FLG 0
X#endif
X
Xstatic struct StringInfo select_sinfo[] = {
X {&select_nbuf[0][0],undo,0,NUMCHR,0},
X {&select_nbuf[1][0],undo,0,NUMCHR,0},
X {&select_nbuf[2][0],undo,0,NUMCHR,0},
X {&select_nbuf[3][0],undo,0,NUMCHR,0},
X {&select_nbuf[4][0],undo,0,NUMCHR,0},
X {&select_nbuf[5][0],undo,0,NUMCHR,0},
X {&select_nbuf[6][0],undo,0,NUMCHR,0},
X {&select_nbuf[7][0],undo,0,NUMCHR,0},
X {&select_nbuf[8][0],undo,0,NUMCHR,0},
X {&select_nbuf[9][0],undo,0,NUMCHR,0},
X {&select_nbuf[10][0],undo,0,NUMCHR,0},
X {&select_nbuf[11][0],undo,0,NUMCHR,0},
X {&select_nbuf[12][0],undo,0,NUMCHR,0},
X {&select_nbuf[13][0],undo,0,NUMCHR,0},
X {&select_nbuf[14][0],undo,0,NUMCHR,0},
X {&select_nbuf[15][0],undo,0,NUMCHR,0},
X {&select_nbuf[16][0],undo,0,NUMCHR,0},
X {&select_nbuf[17][0],undo,0,NUMCHR,0},
X {&select_nbuf[18][0],undo,0,NUMCHR,0},
X {&select_nbuf[19][0],undo,0,NUMCHR,0}
X};
X
Xstatic struct Image select_pimg[1];
X
Xstatic struct PropInfo select_pinfo[] = {
X {13,32768,0,32768,2700}
X};
X
Xstatic struct Gadget select_gad[] = {
X {&select_gad[1],56,30,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[0],VALUEGADGETID+ 0},
X {&select_gad[2],56,40,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[1],VALUEGADGETID+ 1},
X {&select_gad[3],56,50,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[2],VALUEGADGETID+ 2},
X {&select_gad[4],56,60,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[3],VALUEGADGETID+ 3},
X {&select_gad[5],56,70,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[4],VALUEGADGETID+ 4},
X {&select_gad[6],56,80,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[5],VALUEGADGETID+ 5},
X {&select_gad[7],56,90,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[6],VALUEGADGETID+ 6},
X {&select_gad[8],56,100,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[7],VALUEGADGETID+ 7},
X {&select_gad[9],56,110,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[8],VALUEGADGETID+ 8},
X {&select_gad[10],56,120,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[9],VALUEGADGETID+ 9},
X {&select_gad[11],148,30,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[10],VALUEGADGETID+10},
X {&select_gad[12],148,40,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[11],VALUEGADGETID+11},
X {&select_gad[13],148,50,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[12],VALUEGADGETID+12},
X {&select_gad[14],148,60,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[13],VALUEGADGETID+13},
X {&select_gad[15],148,70,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[14],VALUEGADGETID+14},
X {&select_gad[16],148,80,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[15],VALUEGADGETID+15},
X {&select_gad[17],148,90,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[16],VALUEGADGETID+16},
X {&select_gad[18],148,100,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[17],VALUEGADGETID+17},
X {&select_gad[19],148,110,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[18],VALUEGADGETID+18},
X {&select_gad[20],148,120,32,8,0,2049,4100,NULL,
X NULL,NULL,0,(APTR)&select_sinfo[19],VALUEGADGETID+19},
X {&select_gad[21],207,30,12,68,0,1,4099,(APTR)&select_pimg[0],
X NULL,NULL,0,(APTR)&select_pinfo[0],PROPGADGETID},
X {NULL,194,116,38,14,0,5,4097,NULL,
X NULL,NULL,0,(APTR)NULL,POSGADGETID}
X};
X
Xstatic struct IntuiText select_txt[] = {
X {2,ITXT_BPEN,ITXT_DRMD,10,8,&ta,(UBYTE*)"Select pen numbers per depth",&select_txt[1]},
X {2,ITXT_BPEN,ITXT_DRMD,14,30,&ta,(UBYTE*)" 11",&select_txt[2]},
X {2,ITXT_BPEN,ITXT_DRMD,14,40,&ta,(UBYTE*)" 11",&select_txt[3]},
X {2,ITXT_BPEN,ITXT_DRMD,14,50,&ta,(UBYTE*)" 11",&select_txt[4]},
X {2,ITXT_BPEN,ITXT_DRMD,14,60,&ta,(UBYTE*)" 11",&select_txt[5]},
X {2,ITXT_BPEN,ITXT_DRMD,14,70,&ta,(UBYTE*)" 11",&select_txt[6]},
X {2,ITXT_BPEN,ITXT_DRMD,14,80,&ta,(UBYTE*)" 11",&select_txt[7]},
X {2,ITXT_BPEN,ITXT_DRMD,14,90,&ta,(UBYTE*)" 11",&select_txt[8]},
X {2,ITXT_BPEN,ITXT_DRMD,14,100,&ta,(UBYTE*)" 11",&select_txt[9]},
X {2,ITXT_BPEN,ITXT_DRMD,14,110,&ta,(UBYTE*)" 11",&select_txt[10]},
X {2,ITXT_BPEN,ITXT_DRMD,14,120,&ta,(UBYTE*)" 11",&select_txt[11]},
X {2,ITXT_BPEN,ITXT_DRMD,106,30,&ta,(UBYTE*)" 11",&select_txt[12]},
X {2,ITXT_BPEN,ITXT_DRMD,106,40,&ta,(UBYTE*)" 11",&select_txt[13]},
X {2,ITXT_BPEN,ITXT_DRMD,106,50,&ta,(UBYTE*)" 11",&select_txt[14]},
X {2,ITXT_BPEN,ITXT_DRMD,106,60,&ta,(UBYTE*)" 11",&select_txt[15]},
X {2,ITXT_BPEN,ITXT_DRMD,106,70,&ta,(UBYTE*)" 11",&select_txt[16]},
X {2,ITXT_BPEN,ITXT_DRMD,106,80,&ta,(UBYTE*)" 11",&select_txt[17]},
X {2,ITXT_BPEN,ITXT_DRMD,106,90,&ta,(UBYTE*)" 11",&select_txt[18]},
X {2,ITXT_BPEN,ITXT_DRMD,106,100,&ta,(UBYTE*)" 11",&select_txt[19]},
X {2,ITXT_BPEN,ITXT_DRMD,106,110,&ta,(UBYTE*)" 11",&select_txt[20]},
X {2,ITXT_BPEN,ITXT_DRMD,106,120,&ta,(UBYTE*)" 11",&select_txt[21]},
X {2,ITXT_BPEN,ITXT_DRMD,197,119,&ta,(UBYTE*)" OK ",NULL},
X};
X
Xstatic short select_brd_XY[] = {
X 193,131, 233,131, 233,114, 192,114, 192,131,
X 195,129, 231,129, 231,116, 194,116, 194,129,
X 204,101, 222,101, 222,26, 203,26, 203,101,
X 206,99, 220,99, 220,28, 205,28, 205,99,
X 103,131, 183,131, 183,26, 102,26, 102,131,
X 11,131, 91,131, 91,26, 10,26, 10,131
X};
X
Xstatic struct Border select_brd[] = {
X {0,0,3,0,BRD_DRMD,5,&select_brd_XY[0],&select_brd[1]},
X {0,0,0,0,BRD_DRMD,5,&select_brd_XY[10],&select_brd[2]},
X {0,0,3,0,BRD_DRMD,5,&select_brd_XY[20],&select_brd[3]},
X {0,0,0,0,BRD_DRMD,5,&select_brd_XY[30],&select_brd[4]},
X {0,0,0,0,BRD_DRMD,5,&select_brd_XY[40],&select_brd[5]},
X {0,0,0,0,BRD_DRMD,5,&select_brd_XY[50],NULL}
X};
X
Xstatic struct Requester select_req = {
X NULL,REQ_LE,REQ_TE,244,140,0,0,select_gad,select_brd,select_txt,REQ_FLG,1,
X NULL,{NULL},NULL,NULL,{NULL}
X};
SHAR_EOF
echo "extracting minrexx.h"
sed 's/^X//' << \SHAR_EOF > minrexx.h
X/*
X * Includes for minrexx.c; please refer to that file for
X * further documentation.
X */
X#include "rexx/rxslib.h"
X/*
X * This is the list of functions we can access. (Cheap forward
X * declarations, too.)
X */
Xlong upRexxPort() ;
Xvoid dnRexxPort() ;
Xvoid dispRexxPort() ;
Xstruct RexxMsg *sendRexxCmd() ;
Xstruct RexxMsg *syncRexxCmd() ;
Xstruct RexxMsg *asyncRexxCmd() ;
Xvoid replyRexxCmd() ;
X/*
X * Maximum messages that can be pending, and the return codes
X * for two bad situations.
X */
X#define MAXRXOUTSTANDING (300)
X#define RXERRORIMGONE (100)
X#define RXERRORNOCMD (30)
X/*
X * This is the association list you build up (statically or
X * dynamically) that should be terminated with an entry with
X * NULL for the name . . .
X */
Xstruct rexxCommandList {
X char *name ;
X APTR userdata ;
X} ;
SHAR_EOF
echo "End of archive 4 (of 4)"
# if you want to concatenate archives, remove anything after this line
exit